package com.prim.update.interfaces;

import com.prim.update.UpdateManager;
import com.prim.update.model.UpdateInfo;
import com.prim.update.impl.UpdateExplorer;
import com.prim.update.listener.OnDownloadListener;

/**
 * ================================================
 * 作    者：linksus
 * 版    本：1.0
 * 创建日期：3/5 0005
 * 描    述：版本更新总管实现接口
 * 修订历史：
 * ================================================
 */
public interface IUpdateExplorer {
    UpdateInfo getInfo();

    void showToast(final String msg);

    UpdateManager.Builder getBuilder();

    void setUpdateChecker(IUpdateChecker iUpdateChecker);

    void setUpdateConverter(IUpdateConverter iUpdateConverter);

    void setUpdatePlan(IUpdatePlan iUpdatePlan);

    void setUpdatePrompter(IUpdatePrompter iUpdatePrompter);

    void setUpdateDownloader(IUpdateDownloader iUpdateDownloader);

    void setUpdateFile(IUpdateFile iUpdateFile);

    void setUpdateLogger(IUpdateLogger iUpdateLogger);

    void setDownloadUIHandler(OnDownloadListener downloadUIHandler);

    void setDownloadUINotificationHandler(OnDownloadListener downloadUINotificationHandler);

    void setCancleUpdate(boolean cancleUpdate);

    boolean isBackstage();

    boolean isBackstageDownload();

    boolean isApkCompleteExits();

    boolean isApkExits();

    String getDownloadPath();

    String getDownloadFileName();

    String getStoragePath();

    String getPatchNewApkPath();

    boolean isAutoDownload();

    boolean isShow();

    /** 开始更新 */
    void update();

    /** 取消更新或者忽略该版本 */
    void ignore();

    /** 终止任务 */
    void stop();

    /** 检查版本是否需要更新 */
    void doCheck();

    /** 解析json */
    void doConvert();

    /** 根据{@link UpdateInfo} 采取方案,若无方案则说明没有版本更新,可提前终止任务 */
    void doPlan(UpdateInfo updateInfo);

    /** UI提示 */
    void doPrompter(UpdateExplorer.PrompterType type);

    /** 下载apk包 */
    void doDownload();

    /** 安装apk包 */
    void doInstall();

    /** 记录任务 */
    void doLogger();

    boolean deleteApkFile();
}
